package stack;

import java.util.LinkedList;

public class SimplifyPath71 {

    public String simplifyPath(String path) {
        LinkedList<String> stack = new LinkedList<>();
        String[] paths = path.split("/");
        for (String s : paths
        ) {
            if (s.equals("") || s.equals(".")) {
                continue;
            }
            if (s.equals("..")) {
                if(stack.size()!=0){
                    stack.pollLast();
                }
                continue;
            }
            stack.offerLast(s);
        }

        if(stack.size()==0){
            return "/";
        }

        StringBuilder sb = new StringBuilder();



        while (stack.size()!=0) {
            sb.append("/").append(stack.poll());
        }

        return sb.toString();

    }

//    public String simplifyPath(String path) {
//        path=path+'/';
//        LinkedList<Character> stack = new LinkedList<>();
//        for (int i = 0; i < path.length(); i++) {
//            Character c = path.charAt(i);
//            if(c.equals('/')){
//                if(stack.size()>0){
//                    Character last = stack.pollLast();
//                    if(last.equals('/')){
//                        stack.offer(last);
//                        continue;
//                    }
//                    if(last.equals('.')){
//                        if(stack.size()>0){
//                            Character last2 = stack.pollLast();
//                            if(last2.equals('.')){
//                                Character last3 = stack.getLast();
//                                if(last3.equals('/')){
//                                    int count = 0;
//                                    while (stack.size()!=0&&count!=2){
//                                        if(stack.pollLast().equals('/')){
//                                            count++;
//                                        }
//                                    }
//                                    stack.offer('/');
//                                    continue;
//                                }else {
//                                    stack.offer(last2);
//                                    stack.offer(last);
//                                }
//
//                            }else{
//                                stack.offer(last2);
//                            }
//                        }
//                        continue;
//                    }
//                    stack.offer(last);
//                    stack.offer(c);
//
//                }else {
//                    stack.offer(c);
//                }
//            }else {
//                stack.offer(c);
//            }
//
//        }
//        if(stack.size()>1&&stack.getLast().equals('/')){
//            stack.pollLast();
//        }
//
//        StringBuilder result = new StringBuilder();
//        int size = stack.size();
//        for (int i = 0; i < size; i++) {
//            result.append(stack.pollFirst());
//        }
//        return result.toString();
//    }


//    public String simplifyPath(String path) {
//        path=path+'/';
//        LinkedList<Character> stack = new LinkedList<>();
//        for (int i = 0; i < path.length(); i++) {
//            Character c = path.charAt(i);
//            if(c.equals('/')){
//                if(stack.size()>0){
//                    Character last = stack.getLast();
//                    if(last.equals('/')){
//                        continue;
//                    }
//                    if(last.equals('.')){
//                        if(stack.size()>1){
//                            Character last2 = stack.get(stack.size()-2);
//                            if(last2.equals('.')&&stack.size()>3){
//                                int count = 0;
//                                while (stack.size()!=0&&count!=2){
//                                    if(stack.pollLast().equals('/')){
//                                        count++;
//                                    }
//                                }
//                                continue;
//                            }else {
//                                stack.offer(c);
//                                continue;
//                            }
//                        }
//                        stack.pollLast();
//                        continue;
//                    }
//                }
//            }
//            stack.offer(c);
//        }
//        if(stack.size()>1&&stack.getLast().equals('/')){
//            stack.pollLast();
//        }
//
//        StringBuilder result = new StringBuilder();
//        int size = stack.size();
//        for (int i = 0; i < size; i++) {
//            result.append(stack.pollFirst());
//        }
//        return result.toString();
//    }
}
